package com.woniuxy.amusementparkos.controller.lsy;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.woniuxy.amusementparkos.dto.lvd.TableDataDto;
import com.woniuxy.amusementparkos.entity.lsy.ConsumerItem;
import com.woniuxy.amusementparkos.service.lsy.ConsumerItemService;

import lombok.extern.slf4j.Slf4j;

/**
* @author Muzi
* 消费项控制器
* 2020年4月26日下午8:30:16
*/
@Controller
@RequestMapping("/consumeritem")
@Slf4j
public class ConsumerItemController {
	//注入服务
	@Autowired
	private ConsumerItemService consumerItemService;
	
	@ResponseBody
	@RequestMapping("/delete")
	public TableDataDto<ConsumerItem> deleteConsumerItem(Integer consumer_item_id){
		TableDataDto<ConsumerItem> result = new TableDataDto<>();
		try {
			// 调用service层，捕获异常
			consumerItemService.deleteConsumerItem(consumer_item_id);
		} catch (RuntimeException e) {
			result.setCode(3);
			// 设置提示信息
			result.setMsg("删除失败！当前消费项正在使用");
			// 记录日志信息
			log.warn("ConsumerItem控制器deleteConsumerItem操作引起发生异常："+e);
			return result;
		}
		// 记录日志
		log.info("成功删除消费项，消费项id为："+consumer_item_id);
		// 设置成功操作响应
		result.setCode(1);
		result.setMsg("删除成功");
		return result;
	}
	
	/**
	 * 更新消费项
	 * @param consumerItem
	 * @return 返回处理结果，状态码，提示信息
	 */
	@ResponseBody
	@RequestMapping("/updateOne")
	public TableDataDto<ConsumerItem> updateConsumerItem(ConsumerItem consumerItem){
		TableDataDto<ConsumerItem> result = new TableDataDto<>();
		try {
			// 调用service层，捕获异常
			consumerItemService.updateConsumerItem(consumerItem);
		} catch (RuntimeException e) {
			// 设置响应码
			result.setCode(3);
			// 设置提示信息
			result.setMsg(e.getMessage());
			// 记录日志
			log.warn("ConsumerItem控制器updateConsumerItem操作引起发生异常："+e);
			return result;
		}
		// 记录日志
		log.info("成功更新消费项，更新后为："+consumerItem);
		// 设置成功操作响应
		result.setCode(1);
		result.setMsg("修改成功");
		return result;
	}
	
	/**
	 *  新增消费项控制器
	 * @param consumerItem
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/insertOne")
	public TableDataDto<ConsumerItem> insertConsumerItem(ConsumerItem consumerItem){
		TableDataDto<ConsumerItem> result = new TableDataDto<>();
		// 调用service，并通过统一异常处理
		consumerItemService.insertConsumerItem(consumerItem);
		// 记录日志
		log.info("新增消费项成功，新增的是："+consumerItem);
		// 设置成功操作代码
		result.setCode(1);
		// 成功操作提示信息
		result.setMsg("添加成功");
		return result;
	}
	/**
	 * 查询所有消费项
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/getall")
	public TableDataDto<ConsumerItem> listAll(){
		//创建数据模型
		TableDataDto<ConsumerItem> result = new TableDataDto<>();
		//查询 获得数据列表
		List<ConsumerItem> items = consumerItemService.listAll();
		//填充数据
		result.setData(items);
		//响应码
		result.setCode(0);
		return result;
	}
	
	/**
	 * 转入网页
	 * @return 资源路径
	 */
	@RequestMapping("/show")
	public ModelAndView show() {
		return new ModelAndView("lsy/consumeritem");
	}
	/**
     * 控制器统一异常处理器
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public TableDataDto<Integer> resolveException(Exception e){
    	// 创建对象
    	TableDataDto<Integer> result = new TableDataDto<>();
    	// 设置参数
    	result.setMsg("操作异常，请联系管理员");
    	// 记录日志
    	log.error("ConsumerItemController发生严重异常："+e.getMessage()+e);
    	// 设置状态
		result.setCode(4);
    	return result;
    }
	
}
